Many computer networks in existence today communicate through the transfer of data. Some examples include networks that can function independently (e.g., as Local Area Networks or LANs) or collectively as part of a group of interconnected networks (e.g., Wide Area Networks or WANs), such as the World Wide Web. Some of these networks include technologies that facilitate relatively fast, high data-rate transmissions (e.g., wired, fiber-optic, cable, and Digital Subscriber Line networks). Others facilitate slower data-rate transmissions (e.g., 3G cellular networks).
Regardless of the nature of a network and its components, networks that transfer data are susceptible to congestion or degradation in transferring data between or among network nodes. Data, often broken up and transferred in smaller data segments, partitions, or packets, can be lost in congested networks. Network congestion generally refers to a state of data transfer overload between links in a data communications network. A congested network may be experiencing a load that burdens network capacity, making it difficult to carry additional load.
Estimation of end-to-end link speed for data delivery is therefore important to computer networks to understand the capacity of the network at any given time. Examples include methods of determining end-to-end throughput performance that involve timing the delivery of a data burst (i.e., one or more data packets sent over the same link during a transmission) from sender to receiver. Unfortunately, such methods may be subject to conditions that may distort the measurements, including flow control mechanisms and lower layer protocols.